package com.zxy.ziems.server.energy.service;

import com.zxy.ziems.server.classify.pojo.entity.ClassifyDeviceProperty;
import com.zxy.ziems.server.dto.DataQueryDto;
import com.zxy.ziems.server.energy.pojo.dto.DeviceMeasureDateDTO;
import com.zxy.ziems.server.statistics.pojo.param.BudgetQueryParam;
import com.zxy.ziems.server.vo.*;
import jakarta.servlet.http.HttpServletResponse;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface DataChartService {
    ChartVo thisCycleData(DataQueryDto dataQueryDto);

    ChartVo lastCycleDataCompare(DataQueryDto dataQueryDto);

    ChartCodeVo thisCycleDataAndCode(DataQueryDto dataQueryDto);

    /**
     * 获取给分类下所有数据
     *
     * @param classifyId 分类id
     * @param queryType  查询类型
     * @param startDay   开始时间
     * @param endDay
     * @return
     */
//    List<DeviceMeasureDateDTO> classifyAllById(String classifyId, String queryType, String startDay, String endDay);

    /**
     * 统计当前分类下，下一级分类下的点位，饼图统计
     * @param dataQueryDto
     * @return
     */
    List<PieChartVo> thisCycleDataPie(DataQueryDto dataQueryDto);

    ChartVo compareBarChart(DataQueryDto dataQueryDto);

    void exportChildData(HttpServletResponse response, DataQueryDto dataQueryDto);

    ChartVo compareBarChartEle(DataQueryDto dataQueryDto);

    ReportVo compareChartReport(DataQueryDto dataQueryDto);

    @Deprecated
    ChartVo pointCompareLineChart(DataQueryDto dataQueryDto);

    ChartVo deviceCompareLineChart(DataQueryDto dataQueryDto);

    @Deprecated
    ReportVo pointCompareLineReport(DataQueryDto dataQueryDto);

    ReportVo deviceCompareLineReport(DataQueryDto dataQueryDto);

    EnergyReportVo energyReport(DataQueryDto dataQueryDto);

    EnergyReportVo pointReport(DataQueryDto dataQueryDto);

    /**
     * 科室费用预算
     *
     * @param budgetQueryParam
     * @return 实际费用和预算费用
     */
    ChartVo budget(BudgetQueryParam budgetQueryParam);

    ChartCodeVo compareDataAndCode(DataQueryDto dataQueryDto);

    public List<ClassifyDeviceProperty> getClassifyDeviceProperties(String classifyId);

    /**
     * 获取当前分类下，所有点位合计
     * @return
     */
    public Map<String, BigDecimal> getCurClassifySum(DataQueryDto dataQueryDto);

    /**
     * 环比
     * @param dataQueryDto
     * @return
     */
    ChartVo dataChain(DataQueryDto dataQueryDto);
}
